// pages/scan/scan.js

const app = getApp(); //获取应用实例
Page({

  /**
   * 页面的初始数据
   */
  data: {
    baseimg: app.globalData.baseimg,
  },
  //扫一扫
  scan() {

    // 0. 查看有没有次数
    this.ifcount()
      // 1. 拍照
      .then(this.takePhoto)
      // 2. 将照片转为base64格式
      .then(res => this.toBase64(res.tempImagePath))
      // 3. 把照片传到腾讯云
      .then(
        // res => this.getOCR(res.data)
        //---- 暂时代替ocr接口
        (res) => {
          return new Promise((resolve, reject) => {
            console.log('取代ocr接口调用的测试')
            resolve(666)
          })
        }
        //---- 暂时代替ocr接口
      )
      // 4. 判断是否扫到邮
      .then(this.ifstamp)
      // 5. 扫到'邮'后从后台获取一张随机的卡
      .then(this.getstamp)
      // 6. 把得到的卡保存到数据库
      .then(this.savestamp)
      .then(res => {
        console.log('保存邮卡到数据库后', res)
        // 在第0步的次数如果没有次数会返回reject
      }).catch(err => {
        wx.showToast({
          title: '次数已用完',
        })
      })
  },
  // 0. 前提条件,查看有没有次数
  ifcount() {
    return new Promise((resolve, reject) => {
      wx.cloud.callFunction({
        name: 'checkCount',
        success: (res) => {
          console.log('checkCount', res);

          let count = res.result.count;
          if (count) {
            resolve(res.result.count)
          } else {
            reject('次数已用完')
          }
        },
        fail: (err) => {
          console.log('checkCount', err);
          reject(err)
        },
      })
    })
  },
  //  1. 拍照
  takePhoto(count) {
    // if (count > 0) {
    //获取相机组件上下文
    return new Promise((resolve, reject) => {
      const ctx = wx.createCameraContext()
      ctx.takePhoto({
        quality: 'low',
        success: resolve,
        fail: reject,
      })
    })
    // } else {
    //   wx.showToast({
    //     title: '今天的次数已用完',
    //   })
    // }
  },
  // 2. 将照片转为base64格式
  toBase64(path) {
    return new Promise((resolve, reject) => {
      //获取文件系统对象
      let fs = wx.getFileSystemManager();
      fs.readFile({
        filePath: path, //图片路径
        encoding: 'base64', //编码格式
        success: resolve,
        fail: reject,
      })
      // console.log(fs)
    })
  },
  // 3. 把照片传到腾讯云
  getOCR(img) {
    return new Promise((resolve, reject) => {
      wx.request({
        method: 'post',
        // url: 'https://ocr.tencentcloudapi.com',
        url: "https://recognition.image.myqcloud.com/ocr/general",
        data: {
          image: img,
          appid: '1256158209',
        },
        header: {
          'host': 'recognition.image.myqcloud.com',
          'content-type': 'application/json',
          'authorization': app.globalData.sign,
        },
        success: (res) => {
          console.log('getOCR', res)
          resolve(res)
        },
        fail: reject,
      })
    })
  },
  // 4. 判断是否扫到'邮'字
  ifstamp(res) {
    return new Promise((resolve, reject) => {
      // let items = res.data.data.items;
      let items = ['66', '666']
      let result = false;
      for (var i = 0; i < items.length; i++) {
        // if (items[i].itemstring.indexOf('邮') >= 0) {
        if (2 > 1) {
          wx.showLoading({
            title: '扫“邮”成功',
          })
          result = true;
          break;
        }
      }
      if (!result) {
        wx.showToast({
          icon: 'none',
          title: '请扫"邮"字'
        })
        reject(result)
      } else {
        resolve(result)
      }
    })
  },
  //5. 调用云函数获取随机值
  getstamp() {
    return new Promise((resolve, reject) => {
      wx.cloud.callFunction({
        name: 'returnType',
        success: (res) => {
          console.log('returnType', res.result);
          let type = res.result.res;
          resolve(type)
          wx.hideLoading()
          wx.redirectTo({
            url: `../result/result?type=${type}`,
          })
        },
        fail: (err) => {
          wx.hideLoading()
          console.log('returnType', err);
          reject(err)
        },
      })
    })
  },
  // 6. 调用云函数保存邮卡
  savestamp(type) {
    if (type < 4) {
      return new Promise((resolve, reject) => {
        wx.cloud.callFunction({
          name: 'savecard',
          data: {
            type: type
          },
          success: (res) => {
            console.log('savecard', res);
            resolve(res)
          },
          fail: (err) => {
            console.log('savecard', err);
            reject(err)
          },
        })
      })
    }
  },


  //跳转到我的邮卡
  toCards() {
    wx.navigateTo({
      url: '../mystamp/mystamp',
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})